코딩테스트 연습 - 문자열 내림차순으로 배치하기 | 프로그래머스 스쿨

[ 템플릿 코드 ]

#include <string>
#include <vector>
 
using namespace std;
 
string solution(string s) {
    string answer = "";
    return answer;
}

[ 풀이 ]

#include <string>
using namespace std;
 
string solution(string s)
{
    for (int i = 0; i < s.length(); i++)
    {
        for (int j = i + 1; j < s.length(); j++)
        {
            if (s[i] < s[j])
            {
                char temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }
 
    return s;
}

[ 해설 ]

#include <string>     // string 자료형을 사용하기 위한 헤더
 
using namespace std;  // std::string 대신 string을 쓰기 위해 사용
 
// 문자열을 받아 내림차순으로 정렬한 문자열을 반환하는 함수
string solution(string s)
{
    // i는 현재 기준이 되는 문자 위치
    // 문자열 처음부터 끝까지 하나씩 확인
    for (int i = 0; i < s.length(); i++)
    {
        // i 뒤에 있는 문자들과 비교하기 위한 반복문
        // i+1부터 시작하는 이유는 이미 앞쪽은 비교했기 때문
        for (int j = i + 1; j < s.length(); j++)
        {
            // 현재 문자(s[i])가 뒤의 문자(s[j])보다 작다면
            // 큰 문자가 앞으로 와야 하므로 위치를 교환
            if (s[i] < s[j])
            {
                // 교환을 위해 현재 문자를 임시 저장
                char temp = s[i];
 
                // 뒤에 있던 더 큰 문자를 앞으로 이동
                s[i] = s[j];
 
                // 임시 저장해둔 문자를 뒤로 이동
                s[j] = temp;
            }
        }
    }
 
    // 모든 비교가 끝나면 내림차순 정렬된 문자열 반환
    return s;
}

[ 타 답안 ]

 

C++ CodingTest